//
//  MFSDKRewardAd.h
//  IMSDK_CHINA
//
//  Created by pillow on 2025/8/11.
//  Copyright © 2025 MFSDK. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN
@protocol MFSDKRewardAdDelegate;

@interface MFSDKRewardAd : NSObject

//创建广告,不用服务器判断奖励，dict可传递nil或者@{}
//需要服务器判断奖励可以传递参数 @{@"userId":@"123",@"extra":@"zidignyi"}
//userId为用户id，可选，extra为开发者自定义字符串，可选
- (instancetype)initWithSlotID:(NSString *)slotID serverDict:(NSDictionary*)dict;

//接收广告回调的代理
@property (nonatomic, weak, nullable) id<MFSDKRewardAdDelegate> delegate;

//设置广告平台，1是MFadx广告，2是广点通，4是穿山甲，5是快手，7是百度,10是倍孜,这个只是适配时，测试各个平台广告是否正常
//提审App Store前请删除这个方法的调用。（方法内有判断，线上模式不生效）
-(void)setAdPlat_test:(int)plat;

//视频广告是否静音。默认 NO,仅适用于广点通、快手广告，需要在对应后台配置的是穿山甲、MFAdx
@property (nonatomic, assign) BOOL videoMuted;

//请求广告
- (void)loadAdData;

//广告的eCPM，单位：分 默认返回0，如果需要真实的ecpm，请联系SDK运营或技术人员
//在mfsdk_RewardedAdDidLoad回调后可以调用
- (NSInteger)eCPM;

//返回广告是否可展示
//当广告已经加载完成&&未曝光&&未过期时，为YES，否则为NO
- (BOOL)isAdValid;

//展示广告，rootViewController必须传递
- (void)showAdFromRootViewController:(UIViewController *)rootViewController;


/*
 如果您同时满足以下所有条件
 1，您使用了服务器判断回调，传递了userId和extra
 2，您对userId和extra的准确度要求特别高，每一次initWithSlotID时传递的userId都不一样，或者extra都不一样
 3，在app在启动app到杀死app的过程中，您多次请求展示同一个slotID的激励视频
 
 那么，从第二次开始，您获取的激励视频的userId和extra可能是之前的
 比如第一次请求ABCDE广告位，extra为123，展示后，不杀死app，再次请求ABCDE，extra为456，您收到的激励视频中extra可能为456，也可能为123
 这是因为SDK内部有缓存逻辑，如果您强烈要求userId和extra必须和您initWithSlotID传入的一致，我们提供两个方案，任选其一
 1，使用disableCaching方法禁用缓存逻辑，但是会导致收益下一些
 2，您保证每次传入的userId都是一样的，extra由MFSDK来生成，您通过SDKcreateExtra传递extra字符串的长度，然后loadAdData，在mfsdk_RewardedAdDidLoad回调方法后通过getSDKExtraStr获取本次的extra
*/
//以下三个方法慎用，如想使用请先咨询技术同学
-(void)disableCaching;
-(void)SDKcreateExtra:(int)length;
-(NSString*)getSDKExtraStr;



@end

@protocol MFSDKRewardAdDelegate <NSObject>
@optional

//请求到了激励视频广告
- (void)mfsdk_RewardedAdDidLoad:(MFSDKRewardAd *)rewardedVideoAd;

//请求广告失败
- (void)mfsdk_RewardedAd:(MFSDKRewardAd *)rewardedVideoAd didFailWithError:(NSError *)error;

//广告已经展示
- (void)mfsdk_RewardedAdExposured:(MFSDKRewardAd *)rewardedAd;

//广告已经关闭
- (void)mfsdk_RewardedAdDidClose:(MFSDKRewardAd *)rewardedAd;

//广告被点击
- (void)mfsdk_RewardedAdDidClick:(MFSDKRewardAd *)rewardedAd;

//视频广告播放达到激励条件回调
- (void)mfsdk_RewardedAdDidRewardEffective:(MFSDKRewardAd *)rewardedVideoAd;

@end


NS_ASSUME_NONNULL_END
